package com.leetcode.题库.score1;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * 给定一个数组，编写一个函数来计算它的最大N个数与最小N个数的和
 * 你需要对数组进行去重。
 * *数组中数字范围[0, 1000]
 * *最大N个数与最小N个数不能有重叠，如有重叠，输入非法返回-1
 * *输入非法返回-1
 */
public class 最大N个数与最小N个数的和 {
    public static void main(String[] args) {
        int[] ints = {1, 20, 5, 56, 7, 8, 9,1};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入N：");
        int N = Integer.parseInt(scanner.nextLine());
        //将基础类型的数组转换为集合
        List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());
        TreeSet<Integer> treeSet = new TreeSet<>(list);
        if (treeSet.size() < (2 * N)) {
            System.out.println("-1");
        }
        int start = 0, end = 0;
        for (int i = 0; i < N; i++) {
            end += treeSet.pollLast();
            start += treeSet.pollFirst();
        }

        System.out.println(start);
        System.out.println(end);

    }
}
